import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.HashMap;
import java.util.Map;

public class RedisHash {
    // 清空数据库
    public static void flushAll(Jedis jedis) {
        jedis.flushAll();
    }

    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");

        try (Jedis jedis = jedisPool.getResource()){
            flushAll(jedis);
            test1(jedis);
        }
    }

    // hset, hmget, hexists, hdel, hkey, hvals
    private static void test1(Jedis jedis) {
        // jedis.hset("key1", "f1", "111");
        Map<String, String> fields = new HashMap<>();
        fields.put("f1", "111");
        fields.put("f2", "222");

        // 一次放入多个, hmset 可以一次存多个 key
        jedis.hset("key1", fields);

        // 获取所有 field
        System.out.println("fields: " + jedis.hkeys("key1"));

        // 获取所有的 val
        System.out.println("vals : " + jedis.hvals("key1"));

        // 获取某个 field
        System.out.println("key1 中 f1 对应的值为: " + jedis.hmget("key1", "f1"));
        System.out.println("key1 中 f2 对应的值为: " + jedis.hmget("key1", "f2"));

        // 判断某个 field 是否存在
        System.out.println("key1 中 f3 对应的值是否存在: " + jedis.hexists("key1", "f3"));

        // 删除对应的 field
        System.out.println("删除的元素个数: " + jedis.hdel("key1", "f1", "f2"));
        System.out.println("key1 中 f1 对应的值是否存在: " + jedis.hexists("key1", "f1"));
        System.out.println("key1 中 f2 对应的值是否存在: " + jedis.hexists("key1", "f2"));
    }
}
